package com.zzg.springboot.annotation.controller;

import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 
 * @ClassName:  CommonController   
 * @Description: springmvc 支持注解详解 
 * @author: 世纪伟图 -zzg
 * @date:   2018年11月5日 上午9:24:21   
 *     
 * @Copyright: 2018 www.digipower.cn 
 * 注意：本内容仅限于深圳市世纪伟图科技开发有限公司内部使用，禁止用于其他的商业目的
 */

@Controller
@RequestMapping("/api/springmvc/annotation")
public class CommonController {
	
	/**
	 * springmvc 常用注解速查表
	 * @Controller：负责注册一个bean 到spring 上下文中
	 * @RequestMapping：注解为控制器指定可以处理哪些 URL 请求
	 * @ResponseBody： 该注解用于将Controller的方法返回的对象。
	 * @RequestBody：该注解用于读取Request请求的body部分数据，使用系统默认配置的HttpMessageConverter进行解析，然后把相应的数据绑定到要返回的对象上 ,再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上
	 * @RequestParam：在处理方法入参处使用 @RequestParam 可以把请求参 数传递给请求方法
	 * @PathVariable：使用@PathVariable接收参数，参数值需要在url进行占位，前端传参的URL。 DEMO：@RequestMapping("/queryfive/{name}")
	 */
	
	/**
	 * 
	 * @Title: queryOne   
	 * @Description: springmvc 使用方式：   @RequestMapping + @RequestParam + 无数据返回
	 * @param: @param sid      
	 * @return: void      
	 * @throws
	 */
	@RequestMapping(value="/queryOne", method={RequestMethod.GET})
	public void queryOne(@RequestParam Long sid){
		System.out.println(" @RequestMapping + @RequestParam + 无数据返回");
	}
	
	/**
	 * 
	 * @Title: queryTwo   
	 * @Description: springmvc 使用方式：   @RequestMapping + @RequestParam + @RequestBody +有数据返回
	 * @param: @param sid      
	 * @return: void      
	 * @throws
	 */
	@RequestMapping(value="/queryTwo", method={RequestMethod.GET})
	@ResponseBody
	public String queryTwo(@RequestParam Long sid){
		System.out.println(" @RequestMapping + @RequestParam + @ResponseBody +有数据返回");
		return String.valueOf(sid);
	}
	
	@RequestMapping(value="/queryThree", method={RequestMethod.POST})
	public void queryThree(@RequestBody Map<String,Object> parame){
		System.out.println(" @RequestMapping + @RequestBody +无数据返回");
	}
	
	@RequestMapping(value="/queryfour", method={RequestMethod.POST})
	@ResponseBody
	public String queryfour(@RequestBody Map<String,Object> parame){
		System.out.println(" @RequestMapping + @RequestBody + @ResponseBody + 有数据返回");
		return String.valueOf(parame.get("sid"));
	}
	
	
	@RequestMapping(value="/queryfive/{id}", method={RequestMethod.GET})
	@ResponseBody
	public void queryfour(@PathVariable String id){
		System.out.println(" @RequestMapping + @RequestBody + @PathVariable + 有数据返回");
	}
}
